Digital storage devices may store digital information representing data from an information source. For many applications, the information source may not be digital itself, but may instead be analog. In such cases, the analog source information may typically be first converted into a digital format and then stored in a digital medium. Some information may be lost in the analog-to-digital conversion. Moreover, during compression of the digital data, additional data may be lost, particularly where “lossy” compression is used.
In particular, a storage medium may be inherently analog; however, through error correction, it may be represented as a “perfect” digital medium. Therefore, the storage procedure may include first encoding the analog source in digital format such that only acceptable distortions are allowed (source coding), and then encoding the resulting digital information against errors that may occur in the analog storage media such that following some retention the digital data could be perfectly reconstructed (channel coding).
One example of such analog-to-digital conversion and compression is in digital images, specifically, JPEG compression of images. The standard JPEG encoding is well documented, however, the following is a brief description of the steps of JPEG encoding.
First, in the image representation stage, an image is broken up into pixels and each pixel is represented using three components: the brightness (Y), and chrominance (Cb and Cr, for blue and red color components). Images in other formats, e.g., RGB, may be reformatted into YCbCr format. The image is now represented by 3 matrices, a matrix for each component.
In the block splitting stage, the matrices are broken up into sub-matrices, for example, 8×8 or 16×16 sub-matrices of the whole image array of pixel values.
In the cosine transform stage, each sub-matrix is transformed into the frequency domain by using a two dimensional cosine transform. The result of this step is a sub-matrix, e.g., 8×8, whose elements are the frequency domain representation of the original sub-matrix.
In the quantization stage, each element in the frequency domain is quantized. As the human eye is more sensitive to amplitude of the lower frequency, the higher frequencies are quantized more coarsely. The quantization is performed by dividing the result of the cosine transform by a quantization matrix and then rounding the result. In this step, original source information may be lost. This step also determines the compression ratio: quantization matrices with higher values will result in higher compression, but with more loss of information in the reconstructed image.
Finally, the entropy coding stage is a compression step for storage purposes. Typically, Huffman coding is used to compress the quantized results of the cosine transform. Before the Huffman coding, the elements of the cosine transform are ordered in a predefined manner as to facilitate a higher compression rate.
FIG. 1 depicts a generalized schematic diagram of prior art system 100 for source and channel encoding and decoding. A processor 105 may obtain data from an analog source 110 and provide it to a source encoder 120, which outputs digitized source information to a channel encoder 130 to create encoded data. The encoded data is stored on storage medium 140. Upon retrieval, retrieved encoded data may include a limited number of errors. Some of these may be corrected by channel decoder 150 to obtain corrected retrieved encoded source information, which is then source-decoded by source decoder 160, to obtain retrieved or reconstructed source data 170.
It is expected that when there are no errors, the analog source may be reconstructed almost perfectly, and that when there are errors the analog source may still be reconstructed, albeit with some errors. However, one drawback of this scheme is that if the number of errors in the return source channel is beyond a certain threshold, the original source information may be reconstructed incorrectly such that it is far removed from the original.
In such conventional systems and methods, distortions may occur during source encoding, e.g., converting the analog information into digital information. In addition, errors may occur during storage and retrieval. The above process may suffice for many applications, even where data is lost in the source coding and/or channel coding. However, in instances requiring high fidelity, reconstruction of the information obtained using the above exemplary process may result in distorted or damaged output. Thus, for example, to correct such storage errors with increased accuracy, a channel encoder may increase the amount of error correction data (redundancy bits) generated and stored for the transformed digital information. However, the amount of error correction data used to achieve sufficient accuracy, e.g., a maximum error probability on the order of 10−15 according to flash memory system standards, may be great, occupying an inflated amount of the digital storage resources, and requiring additional computing time.
There is therefore a need for an improved method for storing information, particularly analog information, for which high fidelity may be beneficial.